package control;

import java.awt.Dialog;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.Point;
import java.awt.event.*;
import java.io.IOException;
import modelo.Controlador1942;
import modelo.Juego;
import modelo.ManejoArchivo;
import modelo.Nivel;
import modelo.Persistencia;
import static modelo.SetUps.VERSION;
import static modelo.SetUps.N_ARCH_OBJETOS;
import static modelo.SetUps.N_ARCH_NIVEL;
import static modelo.SetUps.N_ARCH_JUGADOR;
import static modelo.SetUps.EXTENSION_SAVE;

public class EscuchadorMenu implements ActionListener{
	Nivel nivel;
	Frame ventana;
	Controlador1942 control;
	Juego juego;
	
	public EscuchadorMenu(Nivel niv, Frame vent, Controlador1942 controlador, Juego jue){
		nivel = niv;
		ventana = vent;
		control = controlador;
		juego = jue;	
	}
	
	public void actionPerformed( ActionEvent e ) {
		String comando = e.getActionCommand();
		if( comando.equals( "Guardar" ) ) {
			control.pausar();
			FileDialog dialogo = new FileDialog(ventana, "Guardar", FileDialog.SAVE);
			dialogo.setVisible(true);
			String directorio = dialogo.getDirectory();
			if (directorio == null) return;
			String rutaArchivo = directorio + dialogo.getFile() + EXTENSION_SAVE;
			String rutaObjetos = directorio + N_ARCH_OBJETOS;
			String rutaNivel = directorio + N_ARCH_NIVEL;
			String rutaJugador = directorio + N_ARCH_JUGADOR;
			try {
				Persistencia persistencia = new Persistencia (nivel);
			  	persistencia.persistir(directorio);
			  	ManejoArchivo.merge(rutaArchivo, rutaObjetos, rutaNivel, rutaJugador);
		    } catch (IOException e1) {
		    	System.out.println("Error al guardar");
		    	e1.printStackTrace();
		    }
		    dialogo.dispose();
		}
		
		//No anda
		/*else if( comando.equals( "Cargar" ) ) {
			
			control.pausar();
			JFileChooser chooser = new JFileChooser(); 
			String choosertitle = "Abrir";
		    chooser.setDialogTitle(choosertitle);
		    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
		    chooser.setAcceptAllFileFilterUsed(false);
		    if (chooser.showOpenDialog(ventana) == JFileChooser.APPROVE_OPTION) { 
		      try {
				  Persistencia persistencia = new Persistencia ();
				  persistencia.cargar(chooser.getSelectedFile().toString(),juego);
		      } catch (IOException e1) {
		    	  e1.printStackTrace();
		      }
		      
		    }else {
		      System.out.println("No Selection ");
		      control.invertirPausa();
		    }
		}*/
		
		else if( comando.equals( "Salir" ) ) {
			System.exit(0);
		}
		
		else if( comando.equals( "Pausa" ) ) {
			control.invertirPausa();
		}		
		
		else if( comando.equals( "Controles") || comando.equals( "About") 
			|| comando.equals("Mejores Puntajes") ) {
			control.pausar();
			Dialog dialogo = new Dialog(ventana, comando, false);
			dialogo.setResizable(false);
			TextArea texto;
			if (comando.equals( "Controles")){
				texto = new TextArea(
					"Flechas\t\tMoverse\n" +
					"Z\t\tDisparar\n" +
					"P\t\tPausa\n" +
					"Esc\t\tSalir\n"
					, 50, 50,TextArea.SCROLLBARS_NONE );
				dialogo.setSize(200,100);
			}
			else if (comando.equals( "About")){
				texto = new TextArea(
						"Version: " + VERSION + "\n" +
						"Licencia: GNU GPL v3\n" +
						"Creado por:\n" +
						"\tCeleste Cingolani\n" +
						"\tFrancisco Marin\n" +
						"\tNahuel Persia\n"
						, 50, 50,TextArea.SCROLLBARS_NONE );		
				dialogo.setSize(200,140);
			}
			else {
				texto = new TextArea(
						nivel.getEscenario().getMejoresPuntajes().toString());		
				dialogo.setSize(200,220);				
			}
			dialogo.add(texto);
			dialogo.setLocationRelativeTo(ventana);
			dialogo.setLocation(new Point(300,300));
			dialogo.addWindowListener(new EscuchadorDialogo(dialogo));
			dialogo.setVisible(true);		
		}
		
	}
}
